#include "Map.cpp"

// 在图中找到距离v0最短路径为k的所有顶点

void FindPathForLevelK(GraphMap g,int v0,int K) {
    bool visited[10];
    memset(visited, false,sizeof visited);

    queue<int> q1;
    queue<int> q2;
    initQueue(q1);
    initQueue(q2);

    enterQueue(q1, v0);
    enterQueue(q2,1);
    visited[v0] = true;

    while(!EmptyQueue(q1)) {
        int v,w,level;
        deleteQueue(q1,&v);
        deleteQueue(q2,&level);

        w = FirstAdjVertex(g,v);
        while(w!=-1) {
            if (!visited[w]) {
                visited[w] = true;
                if (level == K) {
                    visit(w);
                }else {
                    enterQueue(q1, w);
                    enterQueue(q2,level+1);
                }
            }
            w = NextAdjVertex(g,v,w);
        }
    }
}

int main() {
    GraphMap g = CreateGraphMapByFile("Map.txt");
    FindPathForLevelK(g,1,1);
}